
# Esta clase maneja los contactos asociados a una cuenta. Para poder cargar comunicaciones, se necesita lograr un vínculo con la entidad, y esto se logra a través de los contactos.
class ContactosController < ApplicationController
	
  before_filter :ensure_login	
	before_filter :get_mod, :only => [:new,:edit, :delete]

# Recupera las comunicaciones en donde estuvo involucrado el contacto.
	def historial
		@comunicaciones = Comunicacion.search_con_hist(params[:search],params[:main_page],params[:contacto_id])		
		respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @comunicaciones }
    end
	end


  # Recupera todos los contactos para ser mostrados en pantalla.
  def index
		@contacto = Contacto.new
    cuenta_id = params[:cuenta_id]
	  if cuenta_id.to_i != 0 then
			@contactos = Contacto.search_cta(params[:search],params[:page],params[:cuenta_id])
    else
    	@contactos = Contacto.search(params[:search],params[:page])
    end

    respond_to do |format|
    	format.js { render :partial => 'contactos_table' }
      format.html # index.html.erb
      format.xml  { render :xml => @contacto }
    end
  end

  # Recupera el contacto que va a ser mostrado en pantalla.
  def show
    @contacto = Contacto.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @contacto }
    end
  end

# Prepara el nuevo contacto para su posterior creación efectiva.
  def new
    @contacto = Contacto.new

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @contacto }
    end  
  
  end

   # Recupera el contacto que va a ser editado.
  def edit
    @contacto = Contacto.find(params[:id])
  end

# Crea efectivamente el contacto.
  def create
    @contacto = Contacto.new(params[:contacto])
		@cuenta = Cuenta.find(:all).first;
    respond_to do |format|
      if @contacto.save
				format.js			
        format.html { redirect_to(contactos_path) }
        format.xml  { render :xml => @contacto, :status => :created, :location => @contacto }
      else
				flash_warning :message => "No se pudo crear el contacto."  
      end
    end
  end

# Actualizar efectivamente el contacto.
  def update
    @contacto = Contacto.find(params[:id])

    respond_to do |format|
      if @contacto.update_attributes(params[:contacto])
        flash[:notice] = 'Contacto was successfully updated.'
        format.html { redirect_to(contactos_path) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @contacto.errors, :status => :unprocessable_entity }
      end
    end
  end

# Elimina efectivamente el contacto seleccionado.
  def destroy
  
    @contacto = Contacto.find(params[:id])
    @contacto.destroy

    respond_to do |format|
      format.html { redirect_to(contactos_url) }
      format.xml  { head :ok }
    end
  end
  
end
